#include <Servo.h> 

Servo o_servo;

unsigned long time_now = 0;
unsigned long time_old = 0;
unsigned long delta_t = 1;
unsigned long int contador = 0;
int servo_pos = 0;
float velocidade = 0;
volatile int flag = LOW;


void setup()
{
  Serial.begin(9600);
  
  o_servo.attach(9);
  
  pinMode(13, OUTPUT);
  pinMode(2, INPUT);
  
  attachInterrupt(0, conta, FALLING);

}


void conta()
{
   time_now = millis();
   
   delta_t = time_now - time_old;
   if( delta_t > 10 )
     contador++;
    
   time_old = time_now;
   
   digitalWrite(13,flag);
   
   flag = !flag;
}



void loop()
{
  o_servo.write(70);
  
  //while( contador < 83 )
    //{ o_servo.write(30); }
    
  //o_servo.detach();  

   if( Serial.available() )
      while(true)
      {
      
        o_servo.write(servo_pos);
        
        switch( Serial.read() )
        {
          case 'r' :
                
            Serial.println(contador);
            //Serial.println(time_now -);
          
          break; 
        
          case 'z' :
                
            contador = 0;
                  
          break;
         
          case 'v' :
          
            //velocidade = (360/40)/(delta_t*1000);
            
            Serial.println( (int)delta_t );
                  
          break; 
          
          case 's' : // Stop servo
          
            o_servo.detach();
                  
          break;
          
          case 'a' :
          
            servo_pos = servo_pos + 5;
            Serial.println( servo_pos );
           
          break;
          
        }
    
    }
}


